# # 类的定义
# class Plane:
#     def flying(self,hour):  # 方法（类的行为）
#         print(f"飞机已经飞行{hour}小时")

# # 获取类的实例
# air_plane1 = Plane()
# air_plane2 = Plane()
#
# # 通过实例调用类中的方法
# air_plane1.flying(2)
# air_plane2.flying(3)

# 实例属性（动态绑定）
class Student:
    # 占位符，表示目前不需要定义具体逻辑
    # pass

    # # 构造方法
    def __init__(self):
        print("__init__")
        # 定义实例属性
        self.name = "Tom"
        self.age = 22

    # 携带参数的构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"name:{self.name}--- age:{self.age}"

    def select_course(self, course_name):
        #定义选课列表
        courses = []
          # 完成选课操作
        courses.append(course_name)
        # 显示选课列表的内容
        print(courses)
        print(self.age)


# # 获取两个学生的实例
s1 = Student("Tom", 22)
s2 = Student("Lily",20)
# print(s1)
# # 给s1实例绑定属性(类的特征)
s1.name = "Tom"
s1.age = 22
# 访问实例的属性
# print(s1.name)
# print(s1.age)
# print(s2.name)
# print(s2.age)

# 调用实例方法
s1.select_course("python")
s1.select_course("java")

# # 类属性
# class WaterDispenser:
#     # 定义类属性，直接写在类中
#     # 饮水机的剩余水量
#     surplus_water = 1000
#     def water_outlet(self, num):
#         WaterDispenser.surplus_water -= num  # num: 接水量
#         print(f"剩余水量：{WaterDispenser.surplus_water}")
# # 获取饮水机类的实例
# wd1 = WaterDispenser()
# wd2 = WaterDispenser()
# # 调用接水的方法
# wd1.water_outlet(50)
# wd2.water_outlet(100)
# print(wd1.surplus_water)  # 通过实例访问类属性
# print(WaterDispenser.surplus_water)  # 通过类名访问类属性

# from datetime import datetime
# # 定义一个工具类
# class Uitls:
#     # 类属性(当前的时间和日期）
#     now = datetime.now()
#
#     @classmethod
#     def current_date_time(cls):
#         return cls.now
#
#     @classmethod
#     def current_date(cls):  # 日期
#         return cls.now.strftime("%Y-%m-%d")
#
#     @classmethod
#     def current_year(cls):  # 年份
#         return cls.now.year
#
#     @classmethod
#     def current_month(cls):  # 月份
#         return cls.now.month
#
#     @classmethod
#     def current_day(cls):  # 天
#         return cls.now.day
#
#     @classmethod
#     def current_time(cls):  # 时间
#         return cls.now.strftime("%H-%M-%S")
# # 调用类方法
# print(Uitls.current_date_time())
# print(Uitls.current_date())
# print(Uitls.current_year())
# print(Uitls.current_month())
# print(Uitls.current_date())
# print(Uitls.current_time())


class Calc:
    @staticmethod
    def add(n1, n2):
        return n1 + n2
# 调用类中的静态方法
print(Calc.add(1, 2))

